home *** CD-ROM | disk | FTP | other *** search
Text File | 1998-05-27 | 12.5 KB | 684 lines | [mlts/slnk] |
- ! Supra 56k V.90
- ! Author: Kris Kreutzman
- !
- ! Copyright: © 1991-1996 Apple Computer, Inc. All Rights Reserved.
- !
- ! revision history:
- ! v2.1 as shipped with the ARA 2.1
- !
- ! 'mlts' resource info for this modem:
- ! byte 1 == 01 -> modem HAS built-in error correction protocols
- ! byte 2 == 01 -> modem HAS built-in data compression protocols
- ! byte 3 == 40 -> max number of chars in varstr 7
- ! byte 4 == 40 -> max number of chars in varstr 8
- ! byte 5 == 40 -> max number of chars in varstr 9
- !
- !
- ! Changes Copyright: © 1998 Diamond Multimedia All Rights Reserved.
- !
- ! revision history:
- ! v2.1D to accomodate 56k connections
- !
- ! Set DTE to 115200 BPS
- ! Added result codes 32000 - 54000 (Label 110-120)
- ! Omitted code 48000 (already included as Label 55)
- ! Relabeled Label 59 as: Connection Established
- ! Changed Label 98 to initialize with &F1
- ! Corrected spelling in Label 3 & 27 "Response"
- ! Removed addition of Calling Tone (\^) at Label 15 & 19
- ! Added result codes for V.90 compatibility (Label 73-79, 83-89)
- ! Added "L" to init string for volume adjustment
- !
- @ORIGINATE
- @ANSWER
- !
- ! ---- Initial modem setup ----
- !
- ! Set serial port speed depending upon the compression flag
- ! A higher rate with compression on to handle expanded data from the modem
- ! A lower rate closer to the DCE when compression is off
- !
- ifstr 5 1 "0"
- serreset 115200, 0, 8, 1
- jump 2
- !
- @LABEL 1
- serreset 38400, 0, 8, 1
- !
- @LABEL 2
- hsreset 0 0 0 0 0 0
- settries 0
- !
- ! Get the modem's attention
- !
- matchclr
- matchstr 1 3 "OK\13\10"
- write "AT\13"
- matchread 30
- !
- @LABEL 3
- !
- ! Setup the modem for the following:
- ! Reset to factory settings
- ! Standard compression/reliablity
- ! Lock serial port speed
- ! Serial port hardware handshaking, turn off software handshaking
- ! Verbose responses and compression/protocol results
- ! CONNECT returns DCE speed
- ! Turn off answering
- ! Reset or return to command mode on DTR toggle (optional)
- !
- matchclr
- matchstr 1 4 "OK\13\10"
- matchstr 2 101 "ERROR\13\10"
- write "AT&F1L&C1&D2W2E0S7=150\13"
- matchread 30
- inctries
- iftries 3 101
- !
- ! Reset the Modem on setup failure
- !
- DTRClear
- pause 5
- DTRSet
- flush
- jump 3
- !
- !
- @LABEL 4
- ! Varstring 4 , reliable link protocol:
- ! = 0, handled by computer (ARAP)
- ! = 1, handled by modem (PPP)
- ! = 2, MNP10 protocol (Cellular protocol, no longer supported)
- ifstr 4 5 "1"
- ifstr 4 5 "2"
- !
- ! Varstring 4 == 0, turn off reliable link protocol in modem (ARAP)
- matchclr
- matchstr 1 9 "OK\13\10"
- write "AT\\N0\13"
- matchread 30
- jump 101
- !
- !
- @LABEL 5
- ! Varstring 5, compression protocol:
- ! = 0, handled by computer
- ! = 1, handled by modem
- ifstr 5 9 "1"
- !
- ! Varstring 5 == 0, turn off compression protocol in modem.
- matchclr
- matchstr 1 9 "OK\13\10"
- write "AT%C0\13"
- matchread 30
- jump 101
- !
- !
- @LABEL 9
- ! Varstring 2, modem speaker:
- ! = 0, speaker off
- ! = 1, speaker on
- ifstr 2 13 "1"
- pause 5
- matchclr
- matchstr 1 13 "OK\13\10"
- write "ATM0\13"
- matchread 30
- jump 101
- !
- ! Modem ready, wait for a call or originate a call
- !
- @LABEL 13
- ifANSWER 32
- !
- !
- ! ---- Originating a call ----
- !
- ! Varstring 6, dialing mode:
- ! = 0, normal dialing
- ! = 1, blind dialing
- ! = 2, manual dialing
- ifstr 6 17 "1"
- ifstr 6 15 "2"
- jump 19
- !
- @LABEL 15
- ! Display ASK dialog with message. Goto label 107 if dialog canceled.
- ASK 2 "Pick up the phone & dial ^1. Hit OK when the phone rings, then hangup." 107
- note "Manual dialing initiated" 3
- ! X1 to ignore dialtone & busy, D to dial, \^ for data tone
- ! (\^ removed with v2.1D)
- write "ATX1D\13"
- jump 32
- !
- @LABEL 17
- note "Dialing without tone" 3
- matchclr
- matchstr 1 19 "OK\13\10"
- ! X1 to ignore dialtone & busy
- write "ATX1\13"
- matchread 30
- jump 101
- !
- !
- @LABEL 19
- ! Display the full dialstring contained in Varstring 1
- note "Dialing ^1" 3
- !
- ! Varstrings 7, 8 and 9, contain dialstring fragments
- ! Long phone numbers may need to be split into smaller groups
- ! for the modem to use
- !
- ! Varstring 3: "p" for pulse & "t" for tone dialing
- ! Varstring 8 == blank (dialstring in varstring 7)
- ! Varstring 9 == blank (dialstring in varstrings 7 & 8)
- ! Otherwise (dialstring in varstrings 7, 8 & 9)
- ! \^ is added to the dialstring to force the modem to generate a data tone
- ! (removed with v2.1D)
- ifstr 8 27 " "
- ifstr 9 24 " "
- !
- ! Write dialstring in varstrings 7, 8 & 9
- matchclr
- matchstr 1 21 "OK\13\10"
- write "ATD^3^7;\13"
- matchread 400
- jump 101
-
- @LABEL 21
- matchclr
- matchstr 1 22 "OK\13\10"
- write "ATD^3^8;\13"
- matchread 400
- jump 101
-
- @LABEL 22
- write "ATD^3^9\13"
- jump 32
- !
- !
- @LABEL 24
- ! Write dialstring in varstrings 7 & 8
- matchclr
- matchstr 1 25 "OK\13\10"
- write "ATD^3\^^7;\13"
- matchread 400
- jump 101
-
- @LABEL 25
- write "ATD^3^8\13"
- jump 32
- !
- @LABEL 27
- ! Write dialstring in varstring 7
- write "ATD^3\^^7\13"
- !
- !
- ! ---- Connection response ----
- !
- ! The following section will parse modem responses of two types:
- ! 1) PROTOCOL: xxx, COMPRESSION: xxx, CONNECT xxx
- ! 2) CONNECT xxx/ARQ/V42
- !
- @LABEL 32
- matchclr
- matchstr 1 81 "RING\13\10"
- matchstr 2 102 "NO DIALTONE\13\10"
- matchstr 3 103 "NO CARRIER"
- matchstr 4 103 "ERROR\13\10"
- matchstr 5 104 "BUSY\13\10"
- matchstr 6 105 "NO ANSWER\13\10"
- matchstr 7 33 "CONNECT "
- matchstr 8 32 "CARRIER"
- matchstr 9 40 "CONNECT\13\10"
- matchstr 10 62 "PROTOCOL: LAP"
- matchstr 11 62 "PROTOCOL: MNP"
- matchstr 12 62 "PROTOCOL: ALT"
- matchstr 13 67 "COMPRESSION: V"
- matchstr 14 67 "COMPRESSION: MNP5"
- matchstr 15 67 "COMPRESSION: CLASS"
- matchread 700
- ifANSWER 32
- jump 101
- !
- ! Parse the speed of connect result codes
- ! 2400 and 4800 have two entries each
- ! to distinguish them from 24000 and 48000
- !
- @LABEL 33
- matchclr
- matchstr 1 40 "2400\13"
- matchstr 2 40 "2400/"
- matchstr 3 41 "4800\13"
- matchstr 4 41 "4800/"
- matchstr 5 42 "7200"
- matchstr 6 43 "9600"
- matchstr 7 44 "12000"
- matchstr 8 45 "14400"
- matchstr 9 46 "16800"
- matchstr 10 47 "19200"
- matchstr 11 48 "21600"
- matchstr 12 49 "24000"
- matchstr 13 50 "26400"
- matchstr 14 51 "28800"
- matchstr 15 52 "31200"
- matchstr 16 53 "33600"
- matchstr 17 54 "38400"
- matchstr 18 55 "48000"
- matchstr 19 56 "56000"
- matchstr 20 57 "57600"
- matchstr 21 58 "64000"
- matchstr 22 110 "32000"
- matchstr 23 111 "34000"
- matchstr 24 112 "36000"
- matchstr 25 113 "38000"
- matchstr 26 114 "40000"
- matchstr 27 115 "42000"
- matchstr 28 116 "44000"
- matchstr 29 117 "46000"
- matchstr 30 118 "50000"
- matchstr 31 119 "52000"
- matchstr 32 120 "54000"
- matchstr 33 73 "2933"
- matchstr 34 74 "3066"
- matchstr 35 75 "3333"
- matchstr 36 76 "3466"
- matchstr 37 77 "3733"
- matchstr 38 78 "3866"
- matchstr 39 79 "4133"
- matchstr 40 83 "4266"
- matchstr 41 84 "4533"
- matchstr 42 85 "4666"
- matchstr 43 86 "4933"
- matchstr 44 87 "5066"
- matchstr 45 88 "5333"
- matchstr 46 89 "5466"
- matchread 30
- jump 59
- !
- ! -- Connection rates --
- ! CommunicatingAt informs ARA of the raw modem to modem
- ! connection speed.
- !
- @LABEL 40
- note "Communicating at 2400 bps." 2
- CommunicatingAt 2400
- jump 60
- !
- @LABEL 41
- note "Communicating at 4800 bps." 2
- CommunicatingAt 4800
- jump 60
- !
- @LABEL 42
- note "Communicating at 7200 bps." 2
- CommunicatingAt 7200
- jump 60
- !
- @LABEL 43
- note "Communicating at 9600 bps." 2
- CommunicatingAt 9600
- jump 60
- !
- @LABEL 44
- note "Communicating at 12400 bps." 2
- CommunicatingAt 12400
- jump 60
- !
- @LABEL 45
- note "Communicating at 14400 bps." 2
- CommunicatingAt 14400
- jump 60
- !
- @LABEL 46
- note "Communicating at 16800 bps." 2
- CommunicatingAt 16800
- jump 60
- !
- @LABEL 47
- note "Communicating at 19200 bps." 2
- CommunicatingAt 19200
- jump 60
- !
- @LABEL 48
- note "Communicating at 21600 bps." 2
- CommunicatingAt 21600
- jump 60
- !
- @LABEL 49
- note "Communicating at 24000 bps." 2
- CommunicatingAt 24000
- jump 60
- !
- @LABEL 50
- note "Communicating at 26400 bps." 2
- CommunicatingAt 26400
- jump 60
- !
- @LABEL 51
- note "Communicating at 28800 bps." 2
- CommunicatingAt 28800
- jump 60
- !
- @LABEL 52
- note "Communicating at 31200 bps." 2
- CommunicatingAt 31200
- jump 60
- !
- @LABEL 53
- note "Communicating at 33600 bps." 2
- CommunicatingAt 33600
- jump 60
- !
- @LABEL 54
- note "Communicating at 38400 bps." 2
- CommunicatingAt 38400
- jump 60
- !
- @LABEL 55
- note "Communicating at 48000 bps." 2
- CommunicatingAt 48000
- jump 60
- !
- @LABEL 56
- note "Communicating at 56000 bps." 2
- CommunicatingAt 56000
- jump 60
- !
- @LABEL 57
- note "Communicating at 57600 bps." 2
- CommunicatingAt 57600
- jump 60
- !
- @LABEL 58
- note "Communicating at 64000 bps." 2
- CommunicatingAt 64000
- jump 60
- !
- @LABEL 110
- note "Communicating at 32000 bps." 2
- CommunicatingAt 32000
- jump 60
- !
- @LABEL 111
- note "Communicating at 34000 bps." 2
- CommunicatingAt 34000
- jump 60
- !
- @LABEL 112
- note "Communicating at 36000 bps." 2
- CommunicatingAt 36000
- jump 60
- !
- @LABEL 113
- note "Communicating at 38000 bps." 2
- CommunicatingAt 38000
- jump 60
- !
- @LABEL 114
- note "Communicating at 40000 bps." 2
- CommunicatingAt 40000
- jump 60
- !
- @LABEL 115
- note "Communicating at 42000 bps." 2
- CommunicatingAt 42000
- jump 60
- !
- @LABEL 116
- note "Communicating at 44000 bps." 2
- CommunicatingAt 44000
- jump 60
- !
- @LABEL 117
- note "Communicating at 46000 bps." 2
- CommunicatingAt 46000
- jump 60
- !
- @LABEL 118
- note "Communicating at 50000 bps." 2
- CommunicatingAt 50000
- jump 60
- !
- @LABEL 119
- note "Communicating at 52000 bps." 2
- CommunicatingAt 52000
- jump 60
- !
- @LABEL 120
- note "Communicating at 54000 bps." 2
- CommunicatingAt 54000
- jump 60
- !
- @LABEL 73
- note "Communicating at 29333 bps." 2
- CommunicatingAt 29333
- jump 60
- !
- @LABEL 74
- note "Communicating at 30666 bps." 2
- CommunicatingAt 30666
- jump 60
- !
- @LABEL 75
- note "Communicating at 33333 bps." 2
- CommunicatingAt 33333
- jump 60
- !
- @LABEL 76
- note "Communicating at 34666 bps." 2
- CommunicatingAt 34666
- jump 60
- !
- @LABEL 77
- note "Communicating at 37333 bps." 2
- CommunicatingAt 37333
- jump 60
- !
- @LABEL 78
- note "Communicating at 38666 bps." 2
- CommunicatingAt 38666
- jump 60
- !
- @LABEL 79
- note "Communicating at 41333 bps." 2
- CommunicatingAt 41333
- jump 60
- !
- @LABEL 83
- note "Communicating at 42666 bps." 2
- CommunicatingAt 42666
- jump 60
- !
- @LABEL 84
- note "Communicating at 45333 bps." 2
- CommunicatingAt 45333
- jump 60
- !
- @LABEL 85
- note "Communicating at 46666 bps." 2
- CommunicatingAt 46666
- jump 60
- !
- @LABEL 86
- note "Communicating at 49333 bps." 2
- CommunicatingAt 49333
- jump 60
- !
- @LABEL 87
- note "Communicating at 50666 bps." 2
- CommunicatingAt 50666
- jump 60
- !
- @LABEL 88
- note "Communicating at 53333 bps." 2
- CommunicatingAt 53333
- jump 60
- !
- @LABEL 89
- note "Communicating at 54666 bps." 2
- CommunicatingAt 54666
- jump 60
- !
- @LABEL 59
- note "Connection Established." 2
- jump 60
- !
- ! Look for reliablilty and compression results
- ! at the end of the connect result.
- !
- @LABEL 60
- matchclr
- matchstr 1 63 "LAPM"
- matchstr 2 63 "REL"
- matchstr 3 63 "ARQ"
- matchstr 4 68 "COMP/"
- matchstr 5 68 "COMP\13"
- matchstr 6 63 "V42/"
- matchstr 7 63 "V42\13"
- matchstr 8 68 "V42BIS"
- matchstr 9 68 "V42bis"
- matchstr 10 63 "MNP\13"
- matchstr 11 68 "MNP5"
- matchstr 12 70 "\10"
- matchread 30
- jump 70
-
- ! -- Modem error correction link negotiation --
- ! Userhook 2 informs ARA that a modem-to-modem error
- ! correcting protocol has been negotiated
- !
- !
- @LABEL 62
- note "Modem Reliable Link Established." 2
- userhook 2
- jump 32
- !
- @LABEL 63
- note "Modem Reliable Link Established." 2
- userhook 2
- jump 60
- !
- ! -- Compression negotiation --
- ! Userhook 3 informs ARA that a modem-to-modem compression
- ! protocol has been negotiated
- !
- @LABEL 67
- note "Modem Compression Established." 2
- userhook 3
- jump 32
- !
- @LABEL 68
- note "Modem Compression Established." 2
- userhook 3
- jump 60
- !
- !
- ! -- Normal exit after "CONNECT" --
- !
- ! This modem has been setup to do CTS handshaking,
- ! and we assume that a CTS handshaking cable is being used.
- !
- @LABEL 70
- ! Turn on CTS handshaking.
- HSReset 0 1 0 0 0 0
- !
- ifANSWER 71
- pause 30
- @LABEL 71
- exit 0
- !
- !
- ! ---- Answer calls ----
- !
- ! A RING result from the modem and in ANSWERING mode
- ! claims the serial port and answering the phone
- !
- @LABEL 81
- ifORIGINATE 32
- userhook 1
- note "Answering phone..." 2
- write "ATA\13"
- jump 32
- !
- !
- ! ---- Hang up and reset modem ----
- !
- @HANGUP
- @LABEL 90
- settries 0
- HSReset 0 0 0 0 0 0
- !
- @LABEL 92
- ! Escape from data to command mode
- matchclr
- matchstr 1 96 "OK\13\10"
- write "+++"
- matchread 20
- !
- @LABEL 94
- ! Force a hangup
- matchclr
- matchstr 1 98 "NO CARRIER\13\10"
- matchstr 2 98 "OK\13\10"
- matchstr 3 98 "ERROR\13\10"
- matchstr 4 98 "0\13\10"
- write "ATH\13"
- matchread 30
- !
- ! Try to get control of the modem by toggling DTR
- DTRClear
- pause 5
- DTRSet
- flush
- !
- ! Try the hangup sequence three times otherwise declare and error
- inctries
- iftries 3 101
- jump 92
- !
- @LABEL 96
- ! Pause between data and command mode
- pause 50
- jump 94
- !
- !
- @LABEL 98
- ! Recall the factory settings
- pause 15
- matchclr
- matchstr 1 99 "OK\13\10"
- write "AT&F1\13"
- matchread 30
- jump 101
- !
- @LABEL 99
- exit 0
- !
- ! ---- Error messages -----
- !
- ! Modem Not Responding
- @LABEL 101
- exit -6019
- !
- ! No Dial Tone
- @LABEL 102
- exit -6020
- !
- ! No Carrier or Error
- @LABEL 103
- exit -6021
- !
- ! Busy
- @LABEL 104
- exit -6022
- !
- ! No Answer
- @LABEL 105
- exit -6023
- !
- ! User Cancellation
- @LABEL 107
- exit -6008
-